#include <iostream>
using namespace std;

const int N = 10;

int n;
char g[N][N];
bool r[N], c[N], ld[2 * N], rd[2 * N];

void dfs(int i)
{
    if (i == n)
    {
        for (int k = 0; k < n; ++k)
            puts(g[k]);
        puts("");
        return;
    }
    for (int j = 0; j < n; ++j) //遍历每一行，并且尝试在某一行的每一列都尝试放皇后
    {
        if (!c[j] && !ld[i + j] && !rd[i + n - 1 - j])
        {
            g[i][j] = 'Q';
            r[i] = true;
            c[j] = true;
            ld[i + j] = true;
            rd[i + n - 1 - j] = true;
            dfs(i + 1);
            g[i][j] = 'N';
            r[i] = false;
            c[j] = false;
            ld[i + j] = false;
            rd[i + n - 1 - j] = false;
        }
    }
    return;
}

int main()
{
    cin >> n;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < n; ++j)
            g[i][j] = 'N';
    dfs(0);
    return 0;
}